package com.zeus.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zeus.mapper.UserMapper;
import com.zeus.pojo.Type;
import com.zeus.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @author 冯扬龙
 * @date 2021/6/10 12:35
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    public UserMapper userMapper;

    /**
     * 后台管理之用户管理模块
     */

    /**
     * 后台：
     * 点击用户管理四个字只是进入service层的方法，要根据条件查询用户是通过mapper的方法，两个
     * 查询是在一起的
     通过用户类型和用户名字来查询对应的用户显示在大屏上,根据条件查询用户
     */
    @Override
    public PageInfo<User> queryAppointUserAndAllUser(int page, int pageSize, User user) {
        PageHelper.startPage(page, pageSize);
        List<User> list = userMapper.queryAppointUserAndAllUser(user);
        PageInfo<User> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

    /**
     * 后台：
     增加一个新用户,插入数据到数据库中
     */
    @Override
    public int addUser(User user) {
        return userMapper.addUser(user);
    }

    /**
     * 后台，根据id删除指定的用户并且由于用了String所以可以支持批量删除的功能
     删除指定用户,支持批量删除
     */
    @Override
    public int deleteUserById(Integer id) {
        return userMapper.deleteUserById(id);
    }

    /**
     * 后台：
     * 对用户点击修改密码：会携带一个id
     * 首先要判断这个用户是不是存在，这个方法用来判断用户是否存在，根据id可以判断user是否存在
     */
    @Override
    public User decideById(Integer id) {
        User user = userMapper.decideById(id);
        return user;

    }

//    用户修改密码以后更新数据
    @Override
    public int updatePwd(User user) {
        return userMapper.updatePwd(user);
    }

    /**
     * 前端：
     * 点击编辑用户信息：
     * 在对用户进行编辑的时候点击上传用户信息，最后一步需要走这个方法
     *
     * @param user
     */
    @Override
    public int updateData(User user) {
        return userMapper.updateData(user);
    }

    /**
     * 前端：
     登录功能的验证
     根据用户名和密码得到用户对象,再判断对象是不是空，不是空的话就登入成功进入index页面
     */
    @Override
    public User toLogin(@RequestParam("username") String username, @RequestParam("password") String password) {
        return userMapper.toLogin(username, password);
    }

    /**
     * 前端：
     * 注册功能：
     注册时用来判断用户名是否已经存在,通过用户名去数据库中匹配，
     已经存在的话就不允许使用相同的名字
     */
    @Override
    public User sureUserExits(String username) {
        return userMapper.sureUserExits(username);
    }
}
